import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.preprocessing import StandardScaler
import joblib

class NN:
    def __init__(self):
        # 加载预训练模型和标准化器
        self.model = tf.keras.models.load_model('my_model.keras')
        self.scaler = joblib.load('scaler.joblib')
    def get_hourly_trend(self):
        # 加载景区历史数据
        data = pd.read_csv('scenic_data.csv', parse_dates=['time'])
        data = data.sort_values('time')
        recent_data = data[-7*24:]['visitors'].values.reshape(-1, 1)
        # 数据标准化
        scaled_data = self.scaler.transform(recent_data)
        X = scaled_data.reshape(1, -1, 1)
        # 模型预测
        pred_scaled = self.model.predict(X)
        # 反归一化得到真实客流量
        pred = self.scaler.inverse_transform(pred_scaled.reshape(-1, 1)).flatten()
        # 修正负值（客流量不能为负）
        pred = np.maximum(pred, 0)   
        return pred.tolist()

# 使用示例
if __name__ == '__main__':
    nn = NN()
    hourly_trend = nn.get_hourly_trend()
    print("小时级客流量趋势预测：", hourly_trend)
